While existing hierarchical policers provide a fair amount of flexibility to manage existing traffic models, they are insufficient in many instances, especially when it comes to emerging applications. Consider the case when there are many users operating in a network and sharing the same access router/element. Each user can run potentially many applications that are accessing the network, and each of these applications can in turn generate multiple network flows. We want to control how much bandwidth each flow uses, cap the bandwidth used by each application, and cap the total bandwidth available for each user as well. This can be done using the above hierarchical structure. The limits are often elastic in nature, where the bandwidth used a flow can exceed its limits as long as there are other flows not using their share. In other words, flows are allowed to share unused bandwidth.
In the current models, however, adding up the limits placed on individual sub-flows at a given level does not equal the bandwidth placed on the aggregated flows at the next level. This is, by design, the nature of the diverse traffic sources that generate data on the Internet. For example, a provider might want to cap each user to not more than 5 Megabits per second (Mbps). It may also restrict peer-to-peer apps from that user to not use more than 3 Mbps, and the Web browser to not use more than 4 Mbps.
Therefore, if, in addition, we want to cap the bandwidth available to a particular type of application across the network (as measured at the access router), then current policer models fall short, and cannot be used without incurring performance penalties.